One integrated circuit for a smart card type application is commonly called a microcircuit or an electronic micromodule. In addition to a microprocessor, a microcircuit includes a number of other hardware resources, generally called peripherals, such as counters, serial interface circuits, random-number generators, clock-signal generators, etc. Also, memories are usually provided, particularly a read only program memory (ROM), electrically erasable programmable read only memories (EEPROMs) for storing application data, or working memories such as random access memories (RAMs). It has also been the practice to have a peripheral access controller that manages the address and data buses with the peripherals.
An integrated circuit of this kind is commonly delivered to a customer who is not necessarily the final user. For this customer, at least one application has been implemented in this integrated circuit, depending on its final purpose. The present trend is towards the implementation of several applications at a given time, one of which is activated by an external application.
These applications may be of different types. They may be, for example, a smart-card operating system, a cryptographic library that could be used for computations or signature verification, enciphering, or incorporated test software. This list of applications is not exhaustive.
These applications are implemented in the integrated circuit in the form of software processes in an application software layer. These processes are executed by the microprocessor of the integrated circuit. To perform certain operations of a given software process, the application software layer must call up processes in the peripherals, hereinafter referred to as hardware processes (as opposed to software processes).
Usually, the application software does so directly, i.e., it directly manages the peripherals of the integrated circuit. To this end, the integrated circuit manufacturer provides all the necessary information, including the addresses of the different peripherals of the integrated circuit, the addresses (in ROM program memory) of the tables of the hardware interrupt vectors, etc. These pieces of information are specific to the integrated circuit. They enable the application software layer to directly call up the hardware process on a peripheral. They also enable the software layer to manage the peripherals in interrupt mode. This means that it can continue to work for as long as the peripheral has not finished executing a requested hardware process (e.g., the programming of an EEPROM memory page).
In this case, it is the application software layer that directly manages the hardware interrupts sent by the peripherals. This implies that it must read and write registers and access the table of the hardware interrupt vectors in the ROM program memory to identify an interrupt source and undertake the necessary action.
Of course, further improvements in the security of the smart cards are constantly being sought in an attempt to prevent any use of these cards for fraudulent purposes.